﻿using System;
using System.Configuration;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data;
using System.Data.SqlClient;

namespace App_Persistencia
{
    public class Usuario_Data
    {
        private int usuarioId;

        public int UsuarioId
        {
            get { return usuarioId; }
            set { usuarioId = value; }
        }

        private string nomUsuario;

        public string NomUsuario
        {
            get { return nomUsuario; }
            set { nomUsuario = value; }
        }

        private string password;

        public string Password
        {
            get { return password; }
            set { password = value; }
        }

        private DateTime fechaCreacion;

        public DateTime FechaCreacion
        {
            get { return fechaCreacion; }
            set { fechaCreacion = value; }
        }

        private Usuario_Tipo_Data tipoUsuario = new Usuario_Tipo_Data();

        public Usuario_Tipo_Data TipoUsuario
        {
            get { return tipoUsuario; }
            set { tipoUsuario = value; }
        }

        public int validarUsuario(out int identificador)
        {
            //Crear el Objeto de conexion, inicializa con la cadena de conexion            
            string conexion = ConfigurationManager.ConnectionStrings["CadenaConexion"].ConnectionString;
            System.Data.SqlClient.SqlConnection connection = new SqlConnection(conexion);
            int valido = 0;
            try
            {
                connection.Open();
                // Creo el Objeto Command, le asigno la conexion y el Procediminto a utilizar
                System.Data.SqlClient.SqlCommand command = new System.Data.SqlClient.SqlCommand();
                command.Connection = connection;
                command.CommandText = "spValidarUsuario";
                command.CommandType = CommandType.StoredProcedure;

                // Declaro el Objeto de parametro
                System.Data.SqlClient.SqlParameter param;

                //establesco el parametro @usuario, uso como entrada los atributos de la clase
                param = command.Parameters.AddWithValue("@usuario", nomUsuario);
                param.DbType = DbType.String;
                param.Direction = ParameterDirection.Input;

                //establesco el parametro @clave
                param = command.Parameters.AddWithValue("@password", password);
                param.DbType = DbType.String;
                param.Direction = ParameterDirection.Input;

                //establesco el parametro de salida @valido
                param = command.Parameters.AddWithValue("@valido", 0);
                param.Direction = ParameterDirection.Output;

                //establesco el parametro de salida @tipoUsuario
                param = command.Parameters.AddWithValue("@tipoUsuario", 0);
                param.Direction = ParameterDirection.Output;

                ////establesco el parametro de salida @identificador
                param = command.Parameters.AddWithValue("@identificador", 0);
                param.Direction = ParameterDirection.Output;

                // ejecuto el procedimiento
                command.ExecuteNonQuery();

                //recupero el valor del parametro @valido
                valido = Convert.ToInt32(command.Parameters["@valido"].Value);

                //recupero el valor del parametro @UsuId
                identificador = Convert.ToInt32(command.Parameters["@identificador"].Value);

                //recupero el valor del parametro @tipoUsuario

                tipoUsuario.Id = Convert.ToInt32(command.Parameters["@tipoUsuario"].Value);

                SqlCommand cmd = new SqlCommand("SELECT tipoUs_Id, tipoUs_Nombre FROM Usuario_Tipo WHERE tipoUs_Id = " + tipoUsuario.Id, connection);
                SqlDataReader dr = cmd.ExecuteReader();

                while (dr.Read())
                {
                    // el dr.GetString(0) si sabemos el orden de las columnas, es muy rapido, pero medio complicado de leer o saber bien
                    tipoUsuario.Id = int.Parse(dr["tipoUs_Id"].ToString());
                    tipoUsuario.Nombre = dr["tipoUs_Nombre"].ToString();
                }

                //return valido;
            }
            catch (Exception e)
            {
                identificador = 0;
                String a = e.ToString();
            }

            finally
            {
                // Cierro la conexion
                connection.Close();
            }
            return valido;
        }







    }





}
